文本三剑客(剩余的sed awk) |
您所在的位置:网站首页 › awk 跳过第一行 › 文本三剑客(剩余的sed awk) |
系列文章目录
` 文章目录 系列文章目录一、sed1.sed命令的操作符2.sed的打印3.面试题 二、awk1.内置变量2.awk打印 总结 一、sedsed是行编辑器 1.sed命令的操作符s:替换,替换指定字符。wj wjj d:删除,删除选定的行。 a:增加,在当前行下面增加一行指定内容。 i:插入,在选定行上面插入一行指定内容。(即时生效) c:替换,将选定行替换为指定内容。 y:字符转换,转换前后的字符长度必须相同。 p:打印,如果同时指定行,表示打印指定行;如果不指定行,则表示打印所有内容;如果有非打印字符,则以 ASCII 码输出。其通常与“-n”选项一起使用。 =:打印行号。 l(小写L):打印数据流中的文本和不可打印的ASCII字符(比如结束符$、制表符\t) r:高级正则表达式 sed最为核心的功能是增删改查 2.sed的打印方式一:按照行号寻求内容 [root@localhost sed]#sed -n ‘1p’ test1.txt --打印第一行 [root@localhost sed]#sed -n ‘4p’ test1.txt --打印第四行 [root@localhost sed]#sed -n ‘KaTeX parse error: Expected 'EOF', got '#' at position 59: …@localhost sed]#̲sed -n '1,3p' t…p’ test1.txt --打印第五行到最后一行 [root@localhost sed]#sed -n ‘2,+2p’ test1.txt —打印第二行+两行的内容,相当于2,4p 方式三:指定间隔打印 [root@localhost sed]#sed -n -e ‘2p’ -e’$p’ test1.txt —打印第二行和最后一行 [root@localhost sed]#sed -n -e ‘2p’ -e’3p’ test1.txt —打印第二行和第三行 方式四:对奇数行和偶数行的打印 [root@localhost sed]#sed -n ‘n;p’ test1.txt —打印偶数的行 [root@localhost sed]#sed -n ‘p;n’ test1.txt —打印奇数的行 n在p前面,跳过一 行,打印下一行,就是偶数行;在后面,就是打印第一行,然后跳过一行,形成奇数行 3.面试题查看指定时间内的日志: [root@localhost ~]#sed -n ‘/2023:08:09/,/2023:09:42:37/p’ /var/log/messages #没有内容 [root@localhost network-scripts]# sed -n ‘/Mar 23 21:00:01/,/Mar 23 21:30:01/p’ /var/log/messages #开头的格式要一致 Mar 23 21:00:01 localhost systemd: Started Session 70 of user root. 修改网卡的IP地址 [root@localhost network-scripts]# sed -i ‘/IPADDR=192.168.169.10/c IPADDR=10.10.10.10’ ifcfg-ens33 总结: 总结: 1.sed命令是一种流编辑器读取文件会进行逐行读取加上指令操作,所以过大的文件一定要拆分后再交给sed处理 2.sed -r 搭配扩展正则表达式使用,使用{n} {n,} {n,m} 不需要加“\” 3.用 -i 时一定要先备份(尤其对重要文件的操作),或者时先实验好确定无误时,再使用 -i 4.sed 命令 的重点在于增删改查四个功能,可以运用在脚本中对重要文件配置的修改,添加等作用尤其有效 二、awk注意一定是单引号:‘模式或条件 {操作}’ 1.内置变量$0: 当前处理的行的整行内容
n
:
当前处理行的第
n
个字段(第
n
列)
N
R
:
当前处理的行的行号(序数)
N
F
:
当前处理的行的字段个数。
n: 当前处理行的第n个字段(第n列) NR: 当前处理的行的行号(序数) NF: 当前处理的行的字段个数。
n:当前处理行的第n个字段(第n列)NR:当前处理的行的行号(序数)NF:当前处理的行的字段个数。NF代表最后一个字段 FS: 列分割符。指定每行文本的字段分隔符,输入内容的分隔符 默认为空格或制表位。与"-F"作用相同 用-F可以不加单引号 -F:,用FS必须用=“” OFS:输出内容的列分隔符 FILENAME:被处理的文件名 RS: 行分隔符。awk从文件中读取资料时, 将根据RS的定义把资料切割成许多条记录,而awk一次仅读入一条记录进行处理。预设值是"\n" awk ‘{print $0}’ test1.txt ----$0,代表整行内容;awk是逐行读取处理,配合$0,就是打印所有内容 $1只取第一列,可以对行切片,输出列 [root@localhost opt]#awk ‘{print NR}’ test1.txt ----打印行号,告诉我们有几行; [root@localhost opt]#awk ‘{print NR,$0}’ test1.txt ----不仅打印行号,还把每行对应的内用一起展示, 比sed展示的内容更直观 [root@localhost opt]#awk ‘NR3{print}’ test1.txt ----指定打印出第三行的内容 [root@localhost opt]#awk 'NR3,NR5{print}’ test1.txt ----打印3-5行的内容 [root@localhost opt]#awk 'NR3;NR5{print}’ test1.txt ----打印第三行和第五行 [root@localhost opt]awk ‘(NR>=3)&&(NR |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |